迷宫问题-----深度优先回溯算法C++编程练习

本文介绍了一种使用深度优先回溯算法解决迷宫问题的方法,程序未进行优化,直接采用基础思路编程。
摘要由CSDN通过智能技术生成

没有对程序进行优化,使用最原始的想法进行编程。

/*
迷宫问题的深度优先回溯法---C++编程练习
Author : Michael
Date : 2014-12-31
E-mail : 1192065414@qq.com
**/

#include <iostream>
#include <stack>
#include <string>
#include <map>
using namespace std;

/* 使用二维数组记录迷宫 */
#define MAX_ROW_SIZE 8
#define MAX_COLUMN_SIZE 11
const char cMouseMap[MAX_ROW_SIZE][MAX_COLUMN_SIZE] = {
	{1,1,1,1,1,1,1,1,1,1,1},
	{1,0,1,1,0,1,1,1,1,1,1},
	{1,0,0,0,0,1,1,1,1,1,1},
	{1,1,1,0,0,0,1,1,1,1,1},
	{1,1,0,1,1,0,1,0,1,1,1},
	{1,1,0,0,0,0,1,0,0,0,1},
	{1,1,0,0,0,0,0,0,1,0,1},
	{1,1,1,1,1,1,1,1,1,1,1}
};

/*
我们需要记录,有哪些线路我们已经搜索过的,还有哪些路是暂未搜索过的(sPath 结构体对应元素值为 0),
而且需要记录那一些探索过的路是通的,正在走的路(sPath 结构体对应元素值为 1),哪些是不通的(sPath 结构体对应元素值为 -1)
若还没有到终点,而且保存结果的栈不空,表明还没有探索完,继续找一个还没有探索过的路进行探索(sPath 结构体对应元素值为 0)
*/

typedef struct sPoint {
	sPoint():x(0),y(0) {}
	int x;
	int y;
}sPoint;

typedef struct sPath {
	sPath():left(0),up(0)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值